package top.rainbowecho.common.mq.mo;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 邮件发送所需的邮件的元数据
 *
 * @author rainbow
 * @since 2019/11/28 14:06
 */
@Data
@NoArgsConstructor
public class MailMeta {
    private List<String> to;

    private String subject;

    private String content;

    private List<MultipartFile> files;

    private String template;

    private Map<String, Object> params;

    /**
     * 发送只包含文本的HTML格式邮件的构造函数
     *
     * @param to 收件人
     * @param subject 主题
     * @param content 文本邮件内容
     */
    public MailMeta(List<String> to, String subject, String content) {
        this.to = to;
        this.subject = subject;
        this.content = content;
    }

    /**
     * 发送可以上传文件的HTML格式邮件的构造函数
     *
     * @param to 收件人
     * @param subject 主题
     * @param content 邮件的文本内容
     * @param files 上传附件的集合
     */
    public MailMeta(List<String> to, String subject, String content, List<MultipartFile> files) {
        this.to = to;
        this.subject = subject;
        this.content = content;
        this.files = files;
    }

    /**
     * 发送只包含文本的模板文件的构造函数，文本模板来自模板文件，数据动态传递
     *
     * @param to 收件人
     * @param template 模板文件名
     * @param params 模板所需数据
     */
    public MailMeta(List<String> to, String template, Map<String, Object> params) {
        this.to = to;
        this.template = template;
        this.params = params;
    }

    /**
     * 发送带有附件的模板文件的构造函数，文本模板来自于模板文件，数据动态传递
     *
     * @param to 收件人
     * @param files 上传的附件集合
     * @param template 模板文件名
     * @param params 模板所需数据
     */
    public MailMeta(List<String> to, List<MultipartFile> files, String template, Map<String, Object> params) {
        this.to = to;
        this.files = files;
        this.template = template;
        this.params = params;
    }
}
